Ejecutar modelos de lenguaje grandes en el propio portátil dejó de ser un experimento para iniciados durante 2024. Si hubiera que señalar al responsable de que cualquier desarrollador pueda tener hoy un Llama 3.2 respondiendo en su terminal en menos de cinco minutos, sería Ollama. Construido sobre llama.cpp, añade experiencia de usuario pulida, un catálogo curado y una API compatible con OpenAI que lo convierte en sustituto inmediato de la nube para la mayoría de tareas de desarrollo.
Qué resuelve Ollama
El problema histórico del LLM local no era la ausencia de motores de inferencia, sino la fricción. llama.cpp existe desde hace años y es excelente, pero compilar con las banderas correctas para Metal, CUDA o ROCm, localizar archivos GGUF, elegir cuantización y recordar parámetros de línea de comandos es una barrera seria para quien solo quiere escribir código.
Ollama empaqueta todo eso en un binario único con un servicio que arranca en localhost:11434 y expone tres cosas: una línea de comandos estilo Docker, una API HTTP con el dialecto de OpenAI, y un catálogo central donde los modelos tienen nombres legibles y cuantizaciones predeterminadas sensatas. El motor sigue siendo llama.cpp por debajo, pero la superficie expuesta cabe en un folio.
Instalación y primer modelo
La instalación depende de la plataforma: brew install ollama en macOS, un script oficial en Linux, instalador gráfico en Windows. En los tres casos el servicio queda corriendo en segundo plano y escuchando en el puerto local. A partir de ahí, una sola orden descarga y arranca un modelo:
ollama run llama3.2
La primera invocación descarga el archivo GGUF cuantizado; las siguientes son instantáneas. El mismo patrón funciona para todo el catálogo: Mistral 7B, Mixtral 8x7B, Qwen 2.5, Phi-3, Gemma 2, DeepSeek Coder v2, o embeddings como nomic-embed-text. La lista completa vive en ollama.com/library.
Dimensionar el hardware
La pregunta que todo el mundo hace es cuánta RAM hace falta. Como regla práctica, Phi-3 Mini corre en cuatro gigabytes, Llama 3.1 8B cuantizado a cuatro bits pide seis, y Mistral 7B se mueve en el mismo rango. Los modelos grandes cambian de categoría: Mixtral 8x7B necesita unos treinta gigabytes, Llama 3.1 70B sobre cuarenta y ocho, y el 405B empieza a pedir más de doscientos cuarenta. La memoria unificada de los Mac con Apple Silicon es ventaja clara aquí, porque la GPU accede al mismo banco que la CPU sin copias.
El rendimiento varía más de lo que se espera. Un M3 Max sirve Llama 3.1 8B a cincuenta u ochenta tokens por segundo; una RTX 4090 pasa de ciento veinte. Los modelos de setenta mil millones de parámetros caen a ocho o doce tokens por segundo incluso en hardware serio. CPU-only es posible para modelos pequeños, pero la experiencia se degrada rápido.
La API compatible con OpenAI
La decisión de diseño más influyente de Ollama es exponer el endpoint /v1/chat/completions con el mismo esquema que OpenAI. El cliente oficial de Python de OpenAI, apuntado a http://localhost:11434/v1 con una clave ficticia, funciona sin modificaciones. Eso significa que cualquier herramienta construida contra la API de OpenAI —Aider, Continue, LangChain, LlamaIndex, OpenWebUI— cambia de proveedor con una sola variable de entorno.
Hay un endpoint nativo de Ollama con más control (streaming estructurado, gestión de contexto), pero la compatibilidad OpenAI es la que disparó la adopción. Los modelos de visión de la familia Llama 3.2 se usan igual, pasando imágenes en base64 dentro del array content del mensaje.
Modelfile y personalización
Para guardar configuraciones reutilizables Ollama define el formato Modelfile, con sintaxis inspirada en Dockerfile. Una línea FROM indica el modelo base, PARAMETER fija temperatura, contexto o top-p, y SYSTEM establece el prompt de sistema. ollama create produce un modelo derivado con nombre propio. Es la forma limpia de versionar asistentes especializados sin mezclar configuración con código de aplicación.
El mismo mecanismo permite importar GGUF externos —afinados propios, versiones específicas de Hugging Face, cuantizaciones a medida— y tratarlos igual que los del catálogo oficial.
Dónde encaja frente a las alternativas
Aquí está el matiz que se pierde en la comparativa superficial. Ollama no compite contra todo lo que ejecuta LLMs locales; compite en un nicho concreto.
Frente a llama.cpp directo, Ollama sacrifica control por ergonomía. Si se necesitan banderas raras, cuantizaciones experimentales, builds personalizados con instrucciones vectoriales específicas, o integración con servidores de inferencia propios, llama.cpp desnudo sigue siendo la opción correcta. Para el noventa por ciento restante, la capa de Ollama ahorra horas sin costar nada perceptible.
Frente a LM Studio, la diferencia es filosófica. LM Studio prioriza interfaz gráfica, es software cerrado y está orientado a quien quiere explorar modelos sin tocar terminal. Ollama es línea de comandos y API, código abierto, pensado para integrarse en flujos de desarrollo. Coexisten sin problema: usar LM Studio para descubrir modelos y Ollama para servirlos desde scripts es un patrón frecuente.
Frente a vLLM, la divergencia es operacional. vLLM está diseñado para producción multiusuario: batching continuo, paged attention, múltiples GPUs, alto throughput agregado. Ollama está optimizado para una sola sesión a la vez; su concurrencia es limitada y su formato nativo es GGUF en lugar del formato nativo de Hugging Face. Para servir a cientos de usuarios simultáneos, vLLM gana sin discusión. Para un desarrollador con un modelo en su máquina o un equipo pequeño detrás de un proxy inverso, Ollama sobra.
Qué significa “local” en la práctica
“Local” se usa como sinónimo de privacidad, pero las dos cosas no son automáticamente equivalentes. Ollama por defecto escucha solo en localhost, lo cual es seguro. Cambiar OLLAMA_HOST=0.0.0.0 para exponer el servicio en la red local es trivial, y mucha gente lo hace sin pensar en las consecuencias: no hay autenticación incorporada, no hay limitación de tasa, no hay auditoría. Cualquier despliegue fuera del propio equipo necesita un proxy inverso con autenticación delante. Traefik con forward-auth vía Authentik es el patrón que uso en producción.
Lo mismo aplica al contenido de los modelos. Descargar un GGUF arbitrario ejecuta código de inferencia sobre pesos de origen desconocido; para entornos sensibles conviene limitarse al catálogo oficial o a fuentes verificables como los repositorios originales de Meta, Mistral o Microsoft.
Integraciones que merecen la pena
El ecosistema maduró rápido. OpenWebUI es la interfaz tipo ChatGPT más pulida y conecta directamente al puerto 11434. Continue.dev da autocompletado y chat en VS Code apuntando a Ollama en lugar de Copilot. Aider ofrece asistencia desde terminal con diffs aplicables al repositorio. LangChain y LlamaIndex lo tratan como proveedor de primera. El contenedor oficial ollama/ollama hace trivial el despliegue en Docker Compose o Swarm con volumen persistente.
Conclusión
Ollama ganó 2024 por la razón correcta: resolvió fricción real sin pretender ser todo para todos. El modelo mental útil es pensarlo como Docker para LLMs —una capa de empaquetado sobre un motor existente— y juzgarlo con ese criterio. Para desarrollo diario, privacidad individual, trabajo offline y despliegues on-prem de pocos usuarios, es la herramienta por defecto y lo será durante varios años. Para servir tráfico de producción a escala, vLLM o TGI siguen siendo la elección correcta. La combinación Ollama más OpenWebUI cubre noventa por ciento de los casos personales y de equipo pequeño; el resto se resuelve cuando aparece, no antes.